home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #1 / Amiga Plus CD - 1997 - No. 01.iso / pd / daten / adm / termintool / termintool.lha / WBStartup / ADMGebStart next >
Text File  |  1996-07-11  |  11KB  |  378 lines

  1. /* $VER: ADMGebStart V 2.0 (26.5.96) © Bernd Stange
  2.  
  3. Erinnert an fällige Geburtstage aus einer Geburtstagsliste
  4. im ASCII Format, welche durch ADMGebList erstellt wurde    */
  5.  
  6. /****************************************************************************/
  7.  
  8. Textedit = 'C:CED'
  9. Textview = 'Multiview'
  10. SETTINGS = 'ENVARC:AddressMaster.cfg'
  11.  
  12. /****************************************************************************/
  13.  
  14. Ver = 'V 2.0'
  15.  
  16. IF EXISTS('ENVARC:ADMscPrefs') THEN PfadVariable = 'ENVARC:'
  17. ELSE 
  18. PfadVariable = 'S:'
  19.  
  20. IF ~SHOW(LIBRARIES,'rexxsupport.library') THEN
  21.    IF ~ADDLIB('rexxsupport.library',0,-30,0) THEN
  22.       EXIT 10
  23. IF ~SHOW(LIBRARIES,'rexxreqtools.library') THEN
  24.    IF ~ADDLIB('rexxreqtools.library',0,-30,0) THEN
  25.       EXIT 10
  26. IF EXISTS(PfadVariable'ADMscPrefs/ADMcheck') THEN DO
  27.    CALL OPEN(check,PfadVariable'ADMscPrefs/ADMcheck',R)
  28.    contr  = READLn(check)
  29.    contrD = date()
  30.    CALL CLOSE(check)
  31.    IF contrD = contr THEN EXIT
  32.     ELSE DO
  33.       ADDRESS COMMAND
  34.       'Delete >NIL:' PfadVariable'ADMscPrefs/ADMcheck'
  35.     END
  36. END
  37.  
  38. IF ~EXISTS(PfadVariable'ADMscPrefs') THEN CALL Fehler1
  39. IF ~EXISTS(PfadVariable'ADMscPrefs/PfadADM') THEN CALL Fehler2
  40. IF ~EXISTS(PfadVariable'ADMscPrefs/PfadADMDaten') THEN CALL Fehler3
  41. IF ~EXISTS(PfadVariable'ADMscPrefs/PfadADMGebliste') THEN CALL Fehler4
  42. IF ~EXISTS(PfadVariable'ADMscPrefs/Vorwarnung') THEN CALL Fehler5
  43. IF ~EXISTS(PfadVariable'ADMscPrefs/VLOG') THEN CALL Fehler6
  44. IF ~EXISTS(PfadVariable'ADMscPrefs/CheckAktuell') THEN CALL Fehler8
  45. CALL OPEN(ADM,PfadVariable'ADMscPrefs/PfadADM',R)
  46. CALL OPEN(ADMDaten,PfadVariable'ADMscPrefs/PfadADMDaten',R)
  47. CALL OPEN(ADMGebliste,PfadVariable'ADMscPrefs/PfadADMGebliste',R)
  48. CALL OPEN(ADMVorwarnung,PfadVariable'ADMscPrefs/Vorwarnung',R)
  49. CALL OPEN(ADMVLog,PfadVariable'ADMscPrefs/VLOG',R)
  50. CALL OPEN(CheckAktuell,PfadVariable'ADMscPrefs/CheckAktuell',R)
  51. Adressmaster = ReadLn(ADM)
  52. ADMGebliste = ReadLn(ADMGebliste)
  53. ADMDaten = ReadLn(ADMDaten)
  54. Warnung = ReadLn(ADMVorwarnung)
  55. Voicepfad = Readln(ADMVLog)
  56. CheckAktuell = ReadLn(CheckAktuell)
  57. IF Adressmaster = 'nicht gesetzt' THEN CALL Fehler2
  58. IF ADMDaten = 'nicht gesetzt' THEN CALL Fehler3
  59. IF ADMGebliste = 'nicht gesetzt' THEN CALL Fehler4
  60. IF Warnung = 'nicht gesetzt' THEN CALL Fehler5
  61. IF Voicepfad = 'nicht gesetzt' THEN CALL Fehler6
  62. IF ~EXISTS(ADMGebliste) THEN CALL Fehler7
  63. IF CheckAktuell = 'nicht gesetzt' THEN CALL Fehler8
  64. IF Voicepfad = 'Nein' THEN Voicelog  = nein 
  65. ELSE Voicelog  = ja
  66. CALL CLOSE(ADM)
  67. CALL CLOSE(ADMDaten)
  68. CALL CLOSE(ADMGebliste)
  69. CALL CLOSE(ADMVorwarnung)
  70. CALL CLOSE(ADMVLog)
  71. CALL CLOSE(CheckAktuell)
  72. IF CheckAktuell ~= 'NEIN' & CheckAktuell ~= 'nicht gesetzt' THEN CALL CheckAktuell
  73. Datum =  DATE()
  74. Tag = WORD(datum,1)
  75. Month = WORD(datum,2)
  76. Jahr = WORD(datum,3)
  77. Zeit  = DATE(I)
  78. Tagejahr = DATE(D, Zeit,I)
  79. CALL OPEN(sti,ADMGebliste,'r')
  80. Linie = READLN(sti)
  81.  
  82. /* Schleife beginnt */
  83. DO WHILE ~EOF(sti)
  84.    Datentag = WORD(linie,1)
  85.    Datenmonat = WORD(linie,2)
  86.    Datenjahr  = WORD(linie,3)
  87.    Datendatum = jahr || datenmonat || datentag
  88.    DatenTagejahr = DATE("d",Datendatum,"s")
  89.    Diff = DatenTagejahr - Tagejahr
  90.     /* Bedingung beginnt */
  91.     IF diff >= 0 & diff <= Warnung THEN DO
  92.       Name = UPPER(WORD(linie,6)) UPPER(WORD(linie,7))
  93.       TERMINTEXT = UPPER(SUBWORD(linie,6,WORDS(linie)-6))
  94.       Ter = WORD(linie,4)    
  95.       IF Datenjahr = '????' THEN ALter = '?'
  96.       ELSE Alter = Jahr - Datenjahr 
  97.       IF Linie = '' THEN Telefon = ' '
  98.       ELSE Telefon = WORD(linie,WORDS(linie))
  99.       SELECT
  100.         WHEN diff = 0 THEN Text = "HEUTE"
  101.         WHEN diff = 1 THEN Text = "MORGEN"
  102.         WHEN diff = 2 THEN Text = "ÜBERMORGEN"
  103.        OTHERWISE Text = "am" datentag || ". " || datenmonat'.'
  104.       END
  105.       Geschlecht = WORD(linie,5)
  106.       IF Geschlecht = 'H' THEN Anrede = "seinen"
  107.       IF Geschlecht = 'F' THEN Anrede = "ihren"
  108.       IF Geschlecht   = 'X' THEN DO
  109.        Anrede = "das"
  110.        Geburtstag = '. Jubiläum !'
  111.       END
  112.       ELSE Geburtstag = '. Geburtstag !'
  113.       Flags  = 'rtez_flags = ezreqf_centertext'
  114.       
  115.       ANFANG:
  116.       IF Ter = 'Termin:' THEN CALL Termin       /*Nach Termin suchen*/
  117.       ELSE CALL Geburtstag                      /*Nach Geburtstag suchen*/
  118.       IF Auswahl = 2 THEN CALL Verschieben      /*bei Auswahl "Verschieben"*/
  119.       IF Auswahl = 3 THEN CALL Liste            /*bei Auswahl "Liste"*/
  120.       IF Auswahl = 0 THEN DO                    /*letzte Button*/
  121.         IF Ter = 'Termin:' THEN CALL Loeschen   /*bei Auswahl Termin löschen*/
  122.         ELSE CALL Anwaehlen                     /*bei Auswahl Anwählen */
  123.       END                                       /*letzte Button ENDE*/
  124.  
  125.   END /* Vorwarnbedingung Ende */
  126.   Linie = READLN(sti)
  127. END /*Schleife Ende */
  128.  
  129. CALL Ende
  130.  
  131. /************************* Sprungadressen *********************************/
  132.  
  133.  
  134. /* Aufräumen*/
  135. ENDE:
  136. CALL CLOSE(STI)
  137. CALL CLOSE(sort1)
  138. CALL CLOSE(sort)
  139. IF EXISTS('T:.tmp1') THEN DO
  140.    ADDRESS COMMAND
  141.    'copy' 'T:.tmp2' ADMGebliste
  142.    "delete T:.tmp1 T:.tmp2 >NIL:"
  143.    CALL MachAktuell
  144. END
  145. IF EXISTS('T:.tmp1edit') THEN DO
  146.    ADDRESS COMMAND
  147.    'Copy' 'T:.tmp1edit' ADMGebliste
  148.    "delete T:.tmp1edit >NIL:"
  149.    CALL MachAktuell
  150. END
  151.  
  152. IF EXISTS('T:.tmp5') THEN DO
  153.    ADDRESS COMMAND
  154.    "delete T:.tmp5 T:.tmp6 >NIL:"
  155. END
  156. EXIT
  157.  
  158. CheckAktuell:
  159. ADDRESS COMMAND
  160. 'list' ADMDaten 'LFormat="%d %t" >t:dat'  
  161. CALL OPEN(datum,'t:dat',R)
  162. 'list' ADMGebliste 'LFormat="%d %t" >t:dat1'
  163. CALL OPEN(datum1,'t:dat1',R)
  164. Da = READLN(datum)
  165. Da1 = READLN(datum1)
  166. CALL CLOSE(datum)
  167. CALL CLOSE(datum1)
  168. ADDRESS COMMAND
  169. 'Delete t:dat t:dat1 >NIL:'
  170. IF DA ~= DA1 THEN DO 
  171.     Flags  = 'rtez_flags = ezreqf_centertext'
  172.     Titel  = Ver 'DatumCheck:'
  173.     Gadget  = '_Ja|_Nein, jetzt nicht'
  174.     Reqtext = 'A C H T U N G:    Die Geburtstagsliste' ||'0A'x||,
  175.     '"' || ADMGebliste ||  '"' ,
  176.     ||'0A'x|| 'scheint nicht aktuell zu sein !',
  177.     ||'0A'x|| 'Soll ich die Liste gleich erneuern ?'
  178.     Auswahl = rtezrequest(Reqtext,Gadget,Titel,Flags)
  179.     IF Auswahl = 1 THEN DO 
  180.        ADDRESS COMMAND
  181.        'SYS:Rexxc/rx' CheckAktuell
  182.     END
  183. END
  184. RETURN
  185.  
  186. /* Das Datum vom ADM-Datensatz     */
  187. /* dem Alter der Gebliste anpassen */
  188. MachAktuell:
  189. ADDRESS COMMAND
  190. 'list' ADMGebliste 'LFormat="%d %t" >t:dat'
  191. CALL OPEN(datum,'t:dat',R)
  192. Dat = READLN(datum)
  193. CALL CLOSE(datum)
  194. ADDRESS COMMAND
  195. 'DELETE t:dat >NIL:'
  196. 'c:setdate' ADMDaten Dat 
  197. RETURN
  198.  
  199.  
  200. /*Nach Termin suchen*/
  201. Termin:   
  202. Reqtext  = 'Achtung Termin :'||'0A'x|| '' ||'0A'x|| '==> ' || Text '!' || ' <==' ||'0A'x||''||'0A'x|| TERMINTEXT
  203. Gadget   = '_OK|_Verschieben|_Liste|_Nachricht löschen'
  204. Titel    = Ver 'Terminhinweis :'    datum
  205. Auswahl = rtezrequest(Reqtext,Gadget,Titel,Flags)
  206. RETURN
  207.  
  208. /*Nach Geburtstag suchen*/
  209. Geburtstag:
  210. Titel  = Ver 'Geburtstagshinweis :'    datum
  211. Gadget = '_OK|_Verschieben|_Liste|_Anwählen'
  212. ReqText = Name ||'0A'x|| 'hat' text Anrede Alter || Geburtstag ||'0A'x|| 'Tel.:' Telefon
  213. Auswahl = rtezrequest(Reqtext,Gadget,Titel,Flags)
  214. Return
  215.  
  216. /*bei Auswahl "Verschieben"*/
  217. Verschieben:
  218. ADDRESS COMMAND
  219. 'echo >' || PfadVariable || 'ADMscPrefs/ADMcheck' datum
  220. CALL ENDE
  221. RETURN
  222.  
  223. /*bei Auswahl "Liste"*/
  224. Liste:
  225. sortwahl = rtezrequest('Die Geburtstagsliste nach Datum oder Namen' ||'0A'x|| , 
  226.                        'sortieren und dann anzeigen lassen ?' ||'0A'x||'0A'x||,
  227.                        'Oder Editieren ?',
  228.                         ,'nach _Datum|nach _Namen|_Editieren|_Abbruch','Anfrage:',Flags)
  229. CALL OPEN(SORTliste,ADMGebliste,R)
  230. CALL OPEN(sort5,'t:.tmp5',w)
  231. zeile = READLN(SORTliste)
  232. DO WHILE ~EOF(SORTliste)
  233.     Datentag = WORD(zeile,1)
  234.     Datenmonat = WORD(zeile,2)
  235.     Datenjahr  = WORD(zeile,3)
  236.     VorName = WORD(zeile,6) 
  237.     Name =WORD(zeile,7)
  238.     Ter = WORD(zeile,4)
  239.     Telefon = WORD(zeile,WORDS(zeile))
  240.     TERMINTEXT = SUBWORD(linie,6,WORDS(linie)-6)
  241.     Data = Datentag || '.' || Datenmonat  || '.' || Datenjahr
  242.     IF sortwahl = '2' THEN DO    
  243.         Sortzeile = name || ',' vorname
  244.         Sortzeile = INSERT(Data,Sortzeile,28)
  245.         Sortzeile = INSERT('('Ter')',Sortzeile,40)
  246.         Sortzeile = INSERT(Telefon,Sortzeile,46)
  247.         IF WORD(zeile,4) ~= 'Termin:' THEN CALL WRITELN(sort5,Sortzeile)
  248.     END
  249.     IF sortwahl = '1' THEN DO
  250.          Sortzeile = data vorname name 
  251.          Sortzeile = INSERT('('Ter')',Sortzeile,34)
  252.          Sortzeile = INSERT(Telefon,Sortzeile,41)
  253.          IF WORD(zeile,4) ~= 'Termin:' THEN CALL WRITELN(sort5,Sortzeile)
  254.     END
  255.  
  256.     zeile = READLN(SORTliste)
  257. END
  258. CALL CLOSE(sort5)
  259. CALL CLOSE(SORTliste)
  260. IF sortwahl = '2' THEN DO
  261.     ADDRESS COMMAND 
  262.     'sort t:.tmp5 t:.tmp6'
  263.     Textview 't:.tmp6'
  264. CALL LISTE
  265. END
  266. IF sortwahl = '1' THEN DO
  267.     ADDRESS COMMAND
  268.     Textview 't:.tmp5'
  269. CALL LISTE
  270. END
  271. IF sortwahl = '3' THEN DO
  272.   IF EXISTS('T:.tmp1edit') THEN DO
  273.      ADDRESS COMMAND
  274.      Textedit 'T:.tmp1edit'
  275.   END
  276.   ELSE DO
  277.      ADDRESS COMMAND
  278.      'Copy' ADMGebliste 'T:.tmp1edit'
  279.      Textedit 'T:.tmp1edit'
  280.   END     
  281.   CALL LISTE
  282. END
  283.  
  284. RETURN
  285.  
  286. /*bei Auswahl Termin löschen*/
  287. loeschen:
  288. ADDRESS COMMAND
  289. 'Copy' ADMGebliste 'T:.tmp1'
  290. 'Copy' ADMGebliste ADMGebliste'.bak'
  291. CAll OPEN(sort,'T:.tmp1',r)
  292. CAll OPEN(sort1,'T:.tmp2',w)
  293. DO while ~EOF(sort)
  294.    Sortlinie = Readln(sort)
  295.    IF Sortlinie ~= Linie THEN DO
  296.       IF Sortlinie ~= '' THEN CALL WRITELN(sort1,Sortlinie)
  297.    END
  298. END
  299. CALL MachAktuell
  300. RETURN
  301.  
  302.  
  303. /*bei Auswahl Anwählen */
  304. Anwaehlen:
  305. IF ~SHOW('PORTS','ADM.1') THEN DO
  306.     IF EXISTS('c:wbrun') THEN DO
  307.       ADDRESS COMMAND
  308.       'WBrun >NIL:' AdressMaster
  309.     END
  310.     ELSE DO
  311.     PRAGMA(STACK,20000)
  312.     ADDRESS COMMAND
  313.     'run >NIL:' AdressMaster 'FROM' ADMDaten 'SETTINGS=' || SETTINGS 
  314.     END 
  315.     DO 2 WHILE ~SHOW('PORTS','ADM.1')
  316.     'sys:rexxc/WaitForPort ADM.1'
  317.     END
  318. END
  319. ADDRESS 'ADM.1'
  320. OPTIONS RESULTS
  321. ACTIVATEFIRST
  322. DO UNTIL Nm = Telefon
  323.      GETADDRESS ADM
  324.      Nm = COMPRESS(ADM.TELEPHONE)
  325.      IF NM = Telefon THEN DO
  326.         IF Voicelog = 'JA' THEN DO
  327.            cmd = 'RUN >NIL:' Voicepfad '"' || ADM.FULLNAME || '"' '"' || ADM.telephone || '"'
  328.            ADDRESS COMMAND CMD
  329.         END
  330.         ELSE DO
  331.            ADDRESS 'ADM.1'
  332.            DIAL
  333.         END
  334.      END
  335.      ACTIVATENEXT
  336. END
  337. RETURN
  338.  
  339.  
  340.  
  341. Fehler1:
  342. Reqtext = 'Achtung Fehler1:'||'0A'x|| '' ||'0A'x|| 'Bitte erst mit ADMscPrefs alle notwendigen Variablen einstellen !'
  343. CALL Requester
  344.  
  345. Fehler2:
  346. Reqtext = 'Achtung Fehler2:'||'0A'x|| '' ||'0A'x|| 'Bitte erst mit ADMscPrefs den Pfad vom AdressMaster einstellen !'
  347. CALL Requester
  348.  
  349. Fehler3:
  350. Reqtext = 'Achtung Fehler3:'||'0A'x|| '' ||'0A'x|| 'Bitte erst mit ADMscPrefs den Pfad des ADMDatensatzes' ||'0A'x|| 'von ADM anwählen !'
  351. CALL Requester
  352.  
  353. Fehler4:
  354. Reqtext = 'Achtung Fehler4:'||'0A'x|| '' ||'0A'x|| 'Bitte erst mit ADMscPrefs den Pfad für die Gebdatei anwählen ! '
  355. CALL Requester
  356. Fehler5:
  357. Reqtext = 'Achtung Fehler5:'||'0A'x|| '' ||'0A'x|| 'Bitte erst mit ADMscPrefs die Anzahl der Vorwarntage einstellen !'
  358. CALL Requester
  359.  
  360. Fehler6: 
  361. Reqtext = 'Achtung Fehler6:'||'0A'x|| '' ||'0A'x|| 'Bitte erst mit ADMscPrefs die Variable ====> VLog setzen !'
  362. CALL Requester
  363.  
  364. Fehler7:
  365. Reqtext = 'Achtung Fehler7:'||'0A'x|| '' ||'0A'x|| 'Es existiert keine ADMGebliste !' ||'0A'x|| 'Bitte erst mit dem Script ADMGebList.adm erstellen !'
  366. CALL Requester
  367.  
  368. Fehler8:
  369. Reqtext = 'Achtung Fehler8:'||'0A'x|| '' ||'0A'x|| 'Bitte erst mit ADMscPrefs die Variable Checkaktuell setzen !'
  370. CALL Requester
  371.  
  372. Requester:
  373. Flags  = 'rtez_flags = ezreqf_centertext'
  374. Titel  = Ver 'Fehlermelung:'
  375. Gadget  = '_OK'
  376. Auswahl = rtezrequest(Reqtext,Gadget,Titel,Flags)
  377. EXIT
  378.